home *** CD-ROM | disk | FTP | other *** search
Wrap
aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) NNNNAAAAMMMMEEEE arrayd.conf, arrayd.auth - array services configuration files SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff ////uuuussssrrrr////lllliiiibbbb////aaaarrrrrrrraaaayyyy////aaaarrrrrrrraaaayyyydddd....aaaauuuutttthhhh DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN The _a_r_r_a_y_d._c_o_n_f and _a_r_r_a_y_d._a_u_t_h files are used to describe the configuration of one or more arrays to the array services daemon. The default configuration files are "/usr/lib/array/arrayd.conf" and "/usr/lib/array/arrayd.auth", although the system administrator can override this or specify additional files. Every machine running an array services daemon (which should be every machine that is part of an array) must have its own configuration file or files. The configuration files contain information about which arrays are known to the array services daemon and the machines in each of them, the commands that can be executed by the array services daemon, various local options, and information used for authenticating messages passed between array services daemons on different machines. The _a_r_r_a_y_d._c_o_n_f file is typically readable by all users while the _a_r_r_a_y_d._a_u_t_h file is generally readable only by root. Other than their initial access permissions upon installation, there is no functional difference between the two files; either may contain any sort of configuration information. However, because _a_r_r_a_y_d._a_u_t_h is not readable by most users it is most appropriate for secure information such as authentication keys, while _a_r_r_a_y_d._c_o_n_f is intended to contain public information such as the array and command definitions. The initial configuration files that are installed with array services are very minimal: they describe a single array made up only of the local machine, several basic "starter" commands (see _a_r_r_a_y(1) for more information), and no authentication. Every site installing array services will need to customize the configuration file to describe their local arrangement. GGGGEEEENNNNEEEERRRRAAAALLLL SSSSYYYYNNNNTTTTAAAAXXXX The configuration file itself is made up of regular human-readable ASCII text. Blank lines and comments (introduced by a "#" character) are ignored. There are four types of entries in the configuration file: array definitions, command definitions, local options, and authentication information. A typical entry may consist of several subentries; by convention, each should be on a separate line. Similarly, some subentries may have options, which probably ought to be on separate lines as well. Leading whitespace is ignored, so subentries and options can (and should) be indented for improved readability. The entries in a configuration file and the subentries within an individual entry need not be in any particular order. PPPPaaaaggggeeee 1111 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS Most of the various entries, subentries and options take arguments. Arguments come in several varieties: nnnnaaaammmmeeeessss These are simple identifiers, similar to variable names. They can contain upper and lower case letters and numeric digits (although the first character must always be a letter). nnnnuuuummmmbbbbeeeerrrrssss These are treated as signed 64-bit integers and may be specified in hex, octal or decimal, with hex values being preceded by "0x" and octal values being preceded by "0". eeeennnnvvvviiiirrrroooonnnnmmmmeeeennnntttt vvvvaaaarrrriiiiaaaabbbblllleeeessss A name preceded by a "$" is presumed to refer to an environment variable and will be substituted accordingly. ssssttttrrrriiiinnnnggggssss Any arbitrary string of characters enclosed in double quotes. Double quotes and backslashes can be embedded within the string by preceding them with a backslash. Newlines and tabs can be included using "\n" and "\t", respectively. A real newline may also be embedded by preceding it with a backslash, thus allowing a string to span several lines in a configuration file. ssssuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn vvvvaaaarrrriiiiaaaabbbblllleeeessss A name preceded by a "%" is referred to as a "substitution variable" and will be replaced with some other value. Recognized substitution variables include: _%%%%_1111, _%%%%_2222, ..., _%%%%_9999 These represent the first nine arguments specified for an array command. For example, if a user invokes an array command with "_aaaa_rrrr_rrrr_aaaa_yyyy _kkkk_iiii_llll_llll_jjjj_oooo_bbbb _1111_3333_5555_4444 _tttt_oooo_kkkk_eeee_nnnn", then %1 would be replaced with "1354" (the first argument to the command "killjob") and %2 would be replaced with "token". Arguments that don't exist (%3 in this case, for example) will be replaced with an empty string. _%%%%_AAAA_LLLL_LLLL_AAAA_RRRR_GGGG_SSSS This will be replaced with all of the arguments that were specified for an array command. When used with subentries that take multiple arguments, each individual command-line argument will be treated as an individual argument in the subentry as well. When used with subentries that take only a single argument, only the first command-line argument will actually be substituted. _%%%%_AAAA_RRRR_RRRR_AAAA_YYYY This will be replaced with the name of the array that is the target of the current array command. This is primarily of use when a machine belongs to two or more separate arrays. PPPPaaaaggggeeee 2222 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) _%%%%_AAAA_SSSS_HHHH This will be replaced with the array session handle of the program that invoked the current array command. It will be in hex and will be preceded with the string "0x". _%%%%_GGGG_RRRR_OOOO_UUUU_PPPP This will be replaced with the name corresponding to the effective group ID of the process that invoked the current array command. _%%%%_LLLL_OOOO_CCCC_AAAA_LLLL This will be replaced with the name of the local machine, as specified in a LOCAL HOSTNAME entry. This could be useful if several machines share a configuration file containing commands. _%%%%_OOOO_RRRR_IIII_GGGG_IIII_NNNN This will be replaced with the primary hostname of the network interface that transmitted the request from the client machine. If the client and server are the same machine, then this will be "localhost". This is often _n_o_t the same as the client's machine name since it will typically include the network name as well (e.g. "machine.domain.com", not just "machine"). _%%%%_OOOO_UUUU_TTTT_FFFF_IIII_LLLL_EEEE This variable is valid only as part of a MERGE command. This will be replaced with a list of one or more temporary files. Each file will contain the output from a single machine of the related array command. When the merge command is finished, the temporary files will automatically be removed. The files in the list are not in any particular order; if the merge command needs to know which machine a specific file came from, the original array command should include that data in its output. When used with subentries that take multiple arguments, each individual pathname will be treated as an individual argument in the subentry as well. When used with subentries that take only a single argument, only the first output file pathname will actually be substituted. _%%%%_PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT This will be replaced with the name corresponding to the project ID of the process that invoked the current array command. _%%%%_RRRR_EEEE_AAAA_LLLL_GGGG_RRRR_OOOO_UUUU_PPPP If the process that invoked the current array command has different real and effective group IDs, then this will be replaced with the name corresponding to the real group ID. If the real and effective group IDs are the same, then "<same>" will be substituted instead. PPPPaaaaggggeeee 3333 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) _%%%%_RRRR_EEEE_AAAA_LLLL_UUUU_SSSS_EEEE_RRRR If the process that invoked the current array command has different real and effective user IDs, then this will be replaced with the name corresponding to the read user ID. If the real and effective user IDs are the same, then "<same>" will be substituted instead. _%%%%_UUUU_SSSS_EEEE_RRRR This will be replaced with the name corresponding to the effective user ID of the process that invoked the current array command. Note that the names of these substitution variables may be in either upper or lower case. If an unrecognized variable name is specified, a warning will be issued and the variable will be replaced with an empty string. ssssuuuubbbbssssttttiiiittttuuuuttttiiiioooonnnn ffffuuuunnnnccccttttiiiioooonnnnssss A substitution variable followed immediately by one or more arguments enclosed in parentheses is a "substitution function". The arguments of a substitution function can generally be anything that is valid as the argument of an entry or subentry, except for another substitution function. Recognized substitution functions include: _%%%%_AAAA_RRRR_GGGG_((((_n_u_m_b_e_r_)))) This will be replaced with the command argument specified by _n_u_m_b_e_r, which obviously should be a numeric value. If the argument does not exist, a warning is generated and an empty string is substituted. _%%%%_OOOO_PPPP_TTTT_AAAA_RRRR_GGGG_((((_n_u_m_b_e_r_)))) This is similar to _%%%%_AAAA_RRRR_GGGG_((((..._)))) except that no warning is generated if the specified argument does not exist. This is useful for specifying optional arguments. _%%%%_PPPP_IIII_DDDD_((((_a_s_h_)))) _a_s_h specifies an array session handle. This will be replaced with a list of all process IDs that belong to the specified array session _o_n _t_h_e _l_o_c_a_l _m_a_c_h_i_n_e. For entries that take more than one argument, each PID will be treated as a separate argument (see %ALLARGS). As with substitution variables, an unrecognized substitution function will be replaced with an empty string and will cause a warning to be generated. lllliiiitttteeeerrrraaaallll aaaarrrrgggguuuummmmeeeennnnttttssss A literal argument is any argument that can be evaluated when the array services daemon is first started. This includes names, strings, numbers, and environment variables, but specifically does NOT include substitution variables or functions. PPPPaaaaggggeeee 4444 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) nnnnuuuummmmeeeerrrriiiicccc aaaarrrrgggguuuummmmeeeennnnttttssss A numeric argument is an argument that can be resolved to a numeric value when the array services daemon is first started. This includes actual numbers, of course, as well as strings and environment variables. An error will occur in these latter cases if they cannot be converted to proper numeric values. AAAARRRRRRRRAAAAYYYY EEEENNNNTTTTRRRRIIIIEEEESSSS As the name would imply, an array entry is a configuration file entry that defines the machines and other details that make up a particular array. The general format looks like this: _AAAA_RRRR_RRRR_AAAA_YYYY _a_r_r_a_y-_n_a_m_e _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _n_a_m_e_====_v_a_l_u_e _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _l_i_t_a_r_g_...._...._.... _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m_b_e_r _SSSS_EEEE_QQQQ_FFFF_IIII_LLLL_EEEE _p_a_t_h_n_a_m_e _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE _m_a_c_h_i_n_e-_n_a_m_e-_1 _m_a_c_h_i_n_e _o_p_t_i_o_n_s _...._...._.... _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE _m_a_c_h_i_n_e-_n_a_m_e-_2 _...._...._.... Keywords such as _AAAA_RRRR_RRRR_AAAA_YYYY, _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE and _IIII_DDDD_EEEE_NNNN_TTTT may be in either upper or lower case; upper case is used here to distinguish them from other fields. The various subentries do not necessarily have to occur in any particular order. However, they should _n_o_t appear between options in a MACHINE subentry. _a_r_r_a_y-_n_a_m_e is the name that will be used to refer to the array as a whole; it may be of any length. This is the name that would be used with the "-a" option of the _a_r_r_a_y(1) command. The _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE subentry is used to specify one or more arbitrary values that will be maintained in the configuration database but will otherwise be ignored by the array services daemon. Programs that obtain array configuration information (for example, using the _a_s_l_i_s_t_a_r_r_a_y_s(3X) function) will be provided with a list of these attributes. Thus, these could be useful for maintaining miscellaneous configuration information that may be needed by other programs. The _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE subentry may be specified more than once. If the attribute starts with a simple identifer followed by an equal sign, then the remainder of the line (with multiple blanks and tabs converted to a single space) will be appended to form a single attribute. Such an attribute could be used along with the _a_s_g_e_t_a_t_t_r(3x) function in a manner similar to environment variables. If the attribute is formed of any other literal argument, then it is presumed to end as soon as white space is encountered. In this case, multiple attributes could be specified on a single line. The _SSSS_EEEE_QQQQ_FFFF_IIII_LLLL_EEEE subentry specifies the pathname of a file used to keep an array session sequence number for the array. The default sequence file is located in the directory specified by _LLLL_OOOO_CCCC_AAAA_LLLL _DDDD_IIII_RRRR (see below) and has a PPPPaaaaggggeeee 5555 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) name formed by appending the array name to the string ".seqfile.". The _IIII_DDDD_EEEE_NNNN_TTTT subentry specifies a numeric value that is used when generating global array session handles for the array. No other array should have the same IDENT value. If an IDENT value is not specified, a random one will be generated. The value should be in the range of 1-32767. Each _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry specifies a single machine that is a member of the array. Each _AAAA_RRRR_RRRR_AAAA_YYYY entry must have at least one _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry. _m_a_c_h_i_n_e-_n_a_m_e is the name that is used to refer to this machine. Ordinarily this would be the machine's hostname, though that is merely a convention and not a requirement. A _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE subentry may have zero or more options. These include: _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE _l_i_t_a_r_g_...._...._.... or _n_a_m_e_====_v_a_l_u_e The _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE option is similar to the _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE subentry in that it is used to specify one or more arbitrary values that will be maintained in the configuration database but will otherwise be ignored by the array services daemon. Programs that obtain machine configuration information (for example, using the _a_s_l_i_s_t_m_a_c_h_i_n_e_s(3X) function) will be provided with a list of these attributes. Thus, these could be useful for maintaining miscellaneous configuration information that may be needed by other programs. The _MMMM_AAAA_CCCC_HHHH_IIII_NNNN_EEEE______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE option may be specified more than once, and has the same syntax as _AAAA_RRRR_RRRR_AAAA_YYYY______AAAA_TTTT_TTTT_RRRR_IIII_BBBB_UUUU_TTTT_EEEE. _[[[[_SSSS_EEEE_RRRR_VVVV_EEEE_RRRR_]]]] _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _s_t_r_i_n_g to specify the full hostname or IP address of the machine. The value should be enclosed in double quotes. If a _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE is not specified, the machine name will be used. The string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR is optional. _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m_b_e_r to specify the numeric identifier of the array services daemon on that machine. This value may be used for generating global array session handles or uniquely identifying the machine. If a _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR _IIII_DDDD_EEEE_NNNN_TTTT is specified for a machine, it should match the _LLLL_OOOO_CCCC_AAAA_LLLL _IIII_DDDD_EEEE_NNNN_TTTT that is specified in that machine's local array services configuration file. Note that unlike the _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE and _PPPP_OOOO_RRRR_TTTT options, the string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR that comes before _IIII_DDDD_EEEE_NNNN_TTTT is required. _[[[[_SSSS_EEEE_RRRR_VVVV_EEEE_RRRR_]]]] _PPPP_OOOO_RRRR_TTTT _n_u_m_b_e_r to specify which port the array services daemon for this machine is listening on. This would override the default port number of 5434. The string _SSSS_EEEE_RRRR_VVVV_EEEE_RRRR is optional. CCCCOOOOMMMMMMMMAAAANNNNDDDD DDDDEEEEFFFFIIIINNNNIIIITTTTIIIIOOOONNNNSSSS.... A command entry defines the actual program that is invoked by the array services daemon when it receives an array command. Its format is similar to an array entry, and looks like this: PPPPaaaaggggeeee 6666 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) _CCCC_OOOO_MMMM_MMMM_AAAA_NNNN_DDDD _c_m_d-_n_a_m_e _IIII_NNNN_VVVV_OOOO_KKKK_EEEE _a_n_y-_a_r_g_s_...._...._.... _MMMM_EEEE_RRRR_GGGG_EEEE _a_n_y-_a_r_g_s_...._...._.... _GGGG_RRRR_OOOO_UUUU_PPPP _a_n_y-_a_r_g _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT _a_n_y-_a_r_g _UUUU_SSSS_EEEE_RRRR _a_n_y-_a_r_g _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS _l_i_t_a_r_g_...._...._.... _c_m_d-_n_a_m_e specifies the actual command name. This is what the user would use when invoking the command with _a_r_r_a_y(1). The _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry specifies the actual program to be executed, plus any arguments that should be supplied to it. Any number of arguments may be specified for the _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry. Groups of arguments that are _n_o_t separated by white space will be concatenated to form single values (white space embedded in a string is not considered to be "white space" for these purposes). Each resulting value will be passed to the program to be executed as a single argument. Thus, if a user typed "array foo a b c", and the _IIII_NNNN_VVVV_OOOO_KKKK_EEEE subentry for the command "foo" were: _IIII_NNNN_VVVV_OOOO_KKKK_EEEE _////_uuuu_ssss_rrrr_////_bbbb_iiii_nnnn_////_tttt_eeee_ssss_tttt_%%%%_1111 _%%%%_2222_""""_tttt_hhhh_iiii_ssss _iiii_ssss _aaaa _tttt_eeee_ssss_tttt_"""" _%%%%_3333 the argument list for the program to be executed would consist of: _aaaa_rrrr_gggg_vvvv_[[[[_0000_]]]] _==== _""""_////_uuuu_ssss_rrrr_////_bbbb_iiii_nnnn_////_tttt_eeee_ssss_tttt_aaaa_"""" _aaaa_rrrr_gggg_vvvv_[[[[_1111_]]]] _==== _""""_bbbb_tttt_hhhh_iiii_ssss _iiii_ssss _aaaa _tttt_eeee_ssss_tttt_"""" _aaaa_rrrr_gggg_vvvv_[[[[_2222_]]]] _==== _""""_cccc_"""" Note that the first value in the argument list also specifies the actual pathname of the program to be executed ("/usr/bin/testa" in this case). The array services daemon does /f2not/f1 have a search path, so this must specify either an absolute path to the file to be executed, or a path relative to the array services daemon's current directory (see the DIR local option). The _MMMM_EEEE_RRRR_GGGG_EEEE subentry is used to specify a "merge command". Ordinarily, when an array command is run on several machines, the results and output from each machine are returned as separate streams of data. However, if a merge command is specified, it will be run after the array command itself has been completed on all machines, and only the results and output of the merge command will be returned. When used with the %OUTFILES substitution variable, this could be a convenient way to consolidate or summarize the results of the array command. The merge command is executed in the same was as a normal _IIII_NNNN_VVVV_OOOO_KKKK_EEEE command, except that it always runs on the same machine as the array services daemon, even if that particular machine is not a member of the array that the array command was run on. The _GGGG_RRRR_OOOO_UUUU_PPPP, _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT and _UUUU_SSSS_EEEE_RRRR subentries are all optional and specify the name of the group, project and user that the program should be run under. Each of these take a single argument. To run with the ID's of the user that invoked the array command, these could be specified as %GROUP, PPPPaaaaggggeeee 7777 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) %PROJECT and %USER, respectively. If these are not specified for a particular command entry, they will default first to the values set in the local options, or if those are not present, to user and group "guest" and project 0. By default, the _GGGG_RRRR_OOOO_UUUU_PPPP and _UUUU_SSSS_EEEE_RRRR subentries only affect the _e_f_f_e_c_t_i_v_e group and user IDs of the program; the _r_e_a_l group and user IDs will be the same as those of the process that invoked the program. This behavior can be changed using the _SSSS_EEEE_TTTT_RRRR_GGGG_IIII_DDDD and _SSSS_EEEE_TTTT_RRRR_UUUU_IIII_DDDD command options (see below). The _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS subentry is used to specify additional details about how the command should be processed. It should be followed by one or more arguments from the following list. The arguments may be in either upper or lower case. They may also be preceded by the string "NO" to negate their effects. _LLLL_OOOO_CCCC_AAAA_LLLL Execute the command on the same machine as the array services daemon _o_n_l_y, even if a target array was specified explicitly or by default. _NNNN_EEEE_WWWW_SSSS_EEEE_SSSS_SSSS_IIII_OOOO_NNNN Execute the command in a new global array session. Normally the command would be run in the same array session as the process that invoked it. _QQQQ_UUUU_IIII_EEEE_TTTT Discard any output generated by the command. If a merge command has been specified, _QQQQ_UUUU_IIII_EEEE_TTTT applies to the merge command and _n_o_t the invoke command. This would allow a merge command to quietly act on the output of the invoke commands. _SSSS_EEEE_TTTT_RRRR_GGGG_IIII_DDDD Run the command with _b_o_t_h its real and effective group IDs set to the value specified by the _GGGG_RRRR_OOOO_UUUU_PPPP subentry. Normally, only the effective group ID is taken from the _GGGG_RRRR_OOOO_UUUU_PPPP subentry, while the real group ID is taken from the process that invoked the command. _SSSS_EEEE_TTTT_RRRR_UUUU_IIII_DDDD Run the command with _b_o_t_h its real and effective user IDs set to the value specified by the _UUUU_SSSS_EEEE_RRRR subentry. Normally, only the effective user ID is taken from the _UUUU_SSSS_EEEE_RRRR subentry, while the real user ID is taken from the process that invoked the command. _WWWW_AAAA_IIII_TTTT Wait for each invoked program to complete execution before returning control to the process that requested the command. This is the default behavior. If _NNNN_OOOO_WWWW_AAAA_IIII_TTTT is specified then control is returned to the requestor immediately after starting the invoked programs. _NNNN_OOOO_WWWW_AAAA_IIII_TTTT implies _QQQQ_UUUU_IIII_EEEE_TTTT and causes any merge command to be ignored. LLLLOOOOCCCCAAAALLLL OOOOPPPPTTTTIIIIOOOONNNNSSSS.... A local options entry specifies options to be used by the array services daemon itself. If more than one local options entry is specified, settings in later entries will silently override those in earlier PPPPaaaaggggeeee 8888 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) entries. A local options entry looks like this: _LLLL_OOOO_CCCC_AAAA_LLLL _DDDD_IIII_RRRR _l_i_t_e_r_a_l-_a_r_g _DDDD_EEEE_SSSS_TTTT_IIII_NNNN_AAAA_TTTT_IIII_OOOO_NNNN _AAAA_RRRR_RRRR_AAAA_YYYY _l_i_t_e_r_a_l-_a_r_g _GGGG_RRRR_OOOO_UUUU_PPPP _l_i_t_e_r_a_l-_a_r_g _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g _IIII_DDDD_EEEE_NNNN_TTTT _n_u_m-_a_r_g _PPPP_OOOO_RRRR_TTTT _n_u_m-_a_r_g _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT _l_i_t_e_r_a_l-_a_r_g _UUUU_SSSS_EEEE_RRRR _l_i_t_e_r_a_l-_a_r_g _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS _l_i_t_e_r_a_l-_a_r_g_...._...._.... All of the subentries in a local entry are optional. The _DDDD_IIII_RRRR subentry specifies an absolute pathname for the array services daemon's working directory. The default is "/usr/lib/array". The _DDDD_EEEE_SSSS_TTTT_IIII_NNNN_AAAA_TTTT_IIII_OOOO_NNNN _AAAA_RRRR_RRRR_AAAA_YYYY subentry specifies the default target array for array commands when one has not been specified explicitly by the user. There is no default value unless only one array is defined (in which case it becomes the default); if a user omits the target array and there is no default then an error will occur. The _GGGG_RRRR_OOOO_UUUU_PPPP, _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT and _UUUU_SSSS_EEEE_RRRR subentries specify the names of the group, project and user under which an array command should be run. A _GGGG_RRRR_OOOO_UUUU_PPPP, _PPPP_RRRR_OOOO_JJJJ_EEEE_CCCC_TTTT or _UUUU_SSSS_EEEE_RRRR specified in a particular command entry will always override these values. These default to the group, project and user that is running the array services daemon. The _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE subentry specifies the value that is returned by the "%LOCAL" substitution variable. The results of array services commands initiated with _a_s_c_o_m_m_a_n_d(3X) will also refer to this name. The default is the actual hostname of the local machine. The _IIII_DDDD_EEEE_NNNN_TTTT subentry specifies a numeric value that is included in global array session handles generated by this array services daemon. Some versions of IRIX may also make use of this value to generate their own global array session handles. No other array services daemon should have the same IDENT value. If an IDENT value is not specified, one will be generated from the hostid of the local machine. The value must be in the range of 1-32767. The _PPPP_OOOO_RRRR_TTTT subentry specifies the network port on which this array services daemon will listen for requests. The default is the standard sgi-arrayd service, 5434. The _OOOO_PPPP_TTTT_IIII_OOOO_NNNN_SSSS subentry is used to specify additional details about the operation of the array services daemon. It should be followed by one or more arguments from the following list. The arguments may be in either upper or lower case. They may also be preceded by the string "NO" to negate their effects. PPPPaaaaggggeeee 9999 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) _SSSS_EEEE_TTTT_MMMM_AAAA_CCCC_HHHH_IIII_DDDD Some versions of IRIX permit setting a system "machine identifier", which is used by the kernel for generating global array session handles. If the current system has this facility and _SSSS_EEEE_TTTT_MMMM_AAAA_CCCC_HHHH_IIII_DDDD is specified, _a_r_r_a_y_d will set the machine ID to the value specified by a LOCAL IDENT statement in the configuration file or on the command line with the ----mmmm option. AAAAUUUUTTTTHHHHEEEENNNNTTTTIIIICCCCAAAATTTTIIIIOOOONNNN IIIINNNNFFFFOOOORRRRMMMMAAAATTTTIIIIOOOONNNN.... An authentication information entry is used to describe the type of authentication that should be done when passing messages to and from other array services daemon. Authentication information entries do not accumulate: if more than one is encountered in the various configuration files processed by an array services daemon, only the last one will have any effect; all information from previous entries will be discarded. There is currently only one type of authentication provided, though more may be provided in the future. Its entry looks like this: _AAAA_UUUU_TTTT_HHHH_EEEE_NNNN_TTTT_IIII_CCCC_AAAA_TTTT_IIII_OOOO_NNNN _SSSS_IIII_MMMM_PPPP_LLLL_EEEE _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g _KKKK_EEEE_YYYY _n_u_m-_a_r_g _HHHH_OOOO_SSSS_TTTT_NNNN_AAAA_MMMM_EEEE _l_i_t_e_r_a_l-_a_r_g _KKKK_EEEE_YYYY _n_u_m-_a_r_g _...._...._.... This entry contains one or more subentries consisting of machine/key pairs. _l_i_t_e_r_a_l-_a_r_g is the network hostname of a machine. Notice that the network hostname is not necessarily the same as the "machine name" used to identify a machine in an array entry (see above). _n_u_m-_a_r_g is a 64-bit unsigned integer that is to be used as the authentication key for all messages originating from that machine. If a key of 0 is specified, authentication will not be performed on messages originating from that machine. Similarly, if a machine has no subentry at all, no authentication will be performed on messages received from it. If a machine appears in more than one array entry, it needs to have only one subentry in the authentication information. Conversely, the machine in an authentication information subentry does not need to appear in any array entries. With the SIMPLE scheme, a "digital signature" is calculated for each message using the authentication key associated with the sending machine, then sent along with the message. When an array services daemon receives a message from another machine, it checks its private database for the authentication key associated with the machine that sent the message, recalculates the digital signature, and ensures that it matches the one sent with the message. This provides some basic protection against forged messages, since a forger (presumably) would not have access to the authentication key that is required to calculate a proper digital signature. Because this approach depends on the secrecy of the authentication keys, it is important to put this type of authentication information entry in a configuration file that is not accessible to general users (e.g. the PPPPaaaaggggeeee 11110000 aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) aaaarrrrrrrraaaayyyydddd....ccccoooonnnnffff((((4444)))) _a_r_r_a_y_d._a_u_t_h file in the default installation). Because both the sender and receiver need to have the same authentication key for a given machine, the administrator must take special care to ensure that the authentication information in each machine's configuration files are consistent with each other. It is possible to disable authentication entirely by using an authentication information entry of the form: _AAAA_UUUU_TTTT_HHHH_EEEE_NNNN_TTTT_IIII_CCCC_AAAA_TTTT_IIII_OOOO_NNNN _NNNN_OOOO_NNNN_EEEE This is the default setting when the array services are first installed. SSSSEEEEEEEE AAAALLLLSSSSOOOO arrayd(1M), asgetattr(3X), aslistarrays(3X), aslistmachines(3X), array_services(5). PPPPaaaaggggeeee 11111111